package com.gph.saviorframework.security.service;

import com.gph.saviorframework.base.service.BaseService;
import com.gph.saviorframework.common.model.ExpressionType;
import com.gph.saviorframework.common.model.ResourcePermission;

import java.util.List;

/**
 * 数据权限服务接口
 */
public interface ResourcePermissionService extends BaseService<ResourcePermission,String>{

    /**
     * 根据用户编号获取数据权限
     * @param userId
     * @return
     */
    List<ResourcePermission> getByUserId(String userId);

    /**
     * 根据用户编号和资源类型查找数据权限
     * @param userId
     * @param resourceType
     * @return
     */
    ResourcePermission getByUserIdAndResourceType(String userId,String resourceType);

    /**
     * 根据用户编号删除数据权限
     * @param userId
     */
    void deleteByUserId(String userId);

    /**
     * 根据资源类型删除数据权限
     * @param resourceType
     */
    void deleteByResourceType(String resourceType);

    /**
     * 根据资源类型和用户编号删除数据权限
     * @param userId
     * @param resourceType
     */
    void deleteByResourceTypeAndUserId(String userId,String resourceType);

    /**
     * 判断是否有某种权限
     * @param permission
     * @param expressionType
     * @return
     */
    boolean hasPermission(ResourcePermission permission,ExpressionType expressionType);
}
